package com.xxxt.wsc.service;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.multipart.MultipartFile;

import com.xxxt.entity.Practice;

/**
 * @description:实习记录service层接口
 * @author:wsc
 * @date:2020年6月11日 上午9:24:41
 */
public interface PracticeService {
	/**
	 * 
	 * @description：通过学号获取该学生的实习列表
	 * @param sno
	 * @return：
	 */
	List<Practice> queryPracticeListBySno(String sno);
	/**
	 * 
	 * @description：通过实习编号id获取单个实习记录具体内容
	 * @param practiceId
	 * @return：
	 */
	Map<String,Object> queryPracticeInfoById(String practiceId);
	/**
	 * 
	 * @author: wsc
	 * @date:2020年6月23日 上午9:44:07
	 * @description：PC端添加入职登记
	 * @param entryTime
	 * @param companyId
	 * @param sno
	 * @param job
	 * @param leaderName
	 * @param leaderPhone
	 * @param entryTestify
	 * @return：
	 */
	boolean addEntryOnPC(
			String entryTime,String companyId,String sno,String job,
			String leaderName,String leaderPhone,
			MultipartFile[] entryTestify,
			HttpServletRequest request,HttpServletResponse response);
	/**
	 * 
	 * @author: wsc
	 * @date:2020年6月23日 上午9:45:36
	 * @description：
	 * @param practiceId
	 * @param leaveTime
	 * @param leaveReason
	 * @param leaveTestify
	 * @param request
	 * @param response
	 * @return：
	 */
	boolean addLeaveOnPC(
			String practiceId,String leaveTime,String leaveReason,
			MultipartFile[] leaveTestify,
			HttpServletRequest request,HttpServletResponse response);
	/**
	 * 
	 * @description：修改实习记录
	 * @param practiceId	实习记录编号id
	 * @param entryTime	入职时间
	 * @param job	岗位
	 * @param leaderName	领导
	 * @param leaderPhone	领导电话
	 * @param entryTestify	需要添加新的入职材料
	 * @param request
	 * @param response
	 * @return：
	 */
	boolean updateEntryPractice(
			String practiceId,String entryTime,String job,
			String leaderName,String leaderPhone,
			List<String> entryTestify);
	/**
	 * 
	 * @description：修改离职记录
	 * @param practiceId	实习记录编号id
	 * @param leaveReason	离职原因
	 * @param leaveTime	离职时间
	 * @param leaveTestify	需要添加新的离职材料
	 * @param request
	 * @param response
	 * @return：
	 */
	boolean updateLeavePractice(
			String practiceId,String leaveTime,String leaveReason,
			List<String> leaveTestify,
			HttpServletRequest request,HttpServletResponse response);
	/**
	 * 
	 * @description：添加实习记录
	 * @param entryTime	入职时间
	 * @param companyId 实习公司Id
	 * @param sno 学号
	 * @param job	岗位
	 * @param leaderName	领导姓名
	 * @param leaderPhone	领导电话
	 * @param entryTestify	入职材料
	 * @param request
	 * @param response
	 * @return：
	 */
	boolean addPractice(
			String entryTime,String companyId,String sno,String job,
			String leaderName,String leaderPhone,
			List<String> entryTestify);
	/**
	 * 
	 * @author: wsc
	 * @date:2020年6月22日 下午9:05:20
	 * @description：上传实习证明材料
	 * @param file
	 * @return：返回文件路径
	 */
	String uploadTestify(HttpServletRequest request,HttpServletResponse response,MultipartFile file,String sno);
	/**
	 * 
	 * @author: wsc
	 * @date:2020年6月22日 下午9:06:17
	 * @description：删除实习证明材料
	 * @param filePath	删除文件路径
	 */
	void deleteTestify(String filePath);
	/**
	 * 
	 * @description：根据实习记录编号ID删除实习记录
	 * @param practiceId 实习记录编号ID
	 * @throws IOException 
	 * @return：
	 */
	boolean deletePractice(HttpServletRequest request,String practiceId) throws IOException;
	/**
	 * 
	 * @author: wsc
	 * @date:2020年6月17日 上午11:29:52
	 * @description：判断是否填写有入职登记但是没有填写离职登记的
	 * @param sno	学号
	 * @return：
	 */
	boolean isRecord(String sno);
	/**
	 * 
	 * @author: wsc
	 * @date:2020年6月20日 上午12:56:40
	 * @description：判断是否在该公司实习过
	 * @param sno	学号
	 * @param companyId	公司id
	 * @return：
	 */
	boolean isJob(String sno,String companyId);
	/**
	 * 
	 * @author: wsc
	 * @date:2020年7月3日 下午1:58:33
	 * @description：判断是否填写了离职登记
	 * @param practiceId
	 * @return：
	 */
	boolean isRecordLeave(String practiceId);
}
